package gdr.window.battle;

import gdr.battle.graphics.*;
import gdr.dev.*;
import gdr.player.*;
import gdr.window.menu.*;
import gdr.action.descriptor.*;

import java.util.*;
/**
 * Menu che contiene le azioni eseguibili da un utente
 * @author Giorgio Vitale
 *
 */
public class BattleActionMenu extends BattleMenu{
	protected DefaultPlayer player;
	
	public BattleActionMenu(SuperGDR9000 gdr, HumanGraphicalClient humanClient, String title){
		super(gdr, humanClient, title);
		setY(TOP_BORDER);
		setWidth(BattleMenu.LARGHEZZA_COLONNA_DESTRA);
		setX(gdr.getWidth()-getWidth()-RIGHT_BORDER);
		
		super.setAdattaAltezza(true);
		super.setRighe_da_visualizzare(5);
	}

	public void setWindowVisibility(){
		super.setWindowVisibility(true, true, true);
	}
	
	public DefaultPlayer getPlayer() {
		return player;
	}
	public void setPlayer(DefaultPlayer player) {
		this.player = player;
	}
	
	public void init(DefaultPlayer player){
		init(player, player.getClasse().getAzioniDisponibili(player));
	}
	
	public void init(DefaultPlayer player, ArrayList<Azione> azioni){
		super.init();
		if (player == null) return;
		setTitle(title);
		this.player = player;
		for (int i=0; i<azioni.size(); i++){
			addMenuOption(new OpzioneAzione(this, humanClient, azioni.get(i), azioni.get(i).getNome(), 
											azioni.get(i).getIsUnlocked().isUnlocked(player), true,
											azioni.get(i).isAttivabile(humanClient.getContainer(), player) ),i,0);
			if (azioni.get(i) instanceof AzioneConMP)
				addMenuOption(new Opzione(((AzioneConMP)azioni.get(i)).getCostoMP(humanClient.getContainer(), player, azioni.get(i))+"MP", false, true, false),i,1);
		}
	}
	
	protected void action_exit(){
		hide();
		if (getParent()!=null)
			getParent().setWindowVisibility();
	}
}
